/*
*
* ████████╗░█████╗░███████╗██████╗░░█████╗░
* ╚══██╔══╝██╔══██╗██╔════╝██╔══██╗██╔══██╗
* ░░░██║░░░██║░░██║█████╗░░██████╦╝███████║
* ░░░██║░░░██║░░██║██╔══╝░░██╔══██╗██╔══██║
* ░░░██║░░░╚█████╔╝██║░░░░░██████╦╝██║░░██║
* ░░░╚═╝░░░░╚════╝░╚═╝░░░░░╚═════╝░╚═╝░░╚═╝
* 
*  :: 九方通逊 ::   Copyright©2020 tofba.com  
* 
*/
package com.lmexpress.service;

import com.lmexpress.orm.openapi.ExpressOrderApi;
import com.lmexpress.orm.openapi.RefCode;

/**
 * <小包对外API接口规范。.>
 * 
 * @author Henry(fba02)
 * @version [版本号, 2020-12-9]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface OpenApiService {
	/**
	 * <获取token.>
	 * 
	 * @param username
	 * @param password
	 * @return
	 * @author Henry(fba02)
	 * @version [版本号, 2020-12-9]
	 * @see [类、类#方法、类#成员]
	 */
	public String accessToken(String username, String password);

	/**
	 * <API下单订单校验.通用校验>
	 * <每个服务商的校验需要写到ApiService.preProcessCreateOrder(ExpressOrderApi
	 * expressOrderApi)>
	 * 
	 * @param expressOrderApi
	 * @return
	 * @author Henry(fba02)
	 * @version [版本号, 2020-12-9]
	 * @see [类、类#方法、类#成员]
	 */
	public String validate(ExpressOrderApi expressOrderApi);

	/**
	 * <API创建订单.>
	 * 
	 * @param expressOrderApi
	 * @return
	 * @author Henry(fba02)
	 * @version [版本号, 2020-12-9]
	 * @see [类、类#方法、类#成员]
	 */
	public String createOrder(ExpressOrderApi expressOrderApi);

	/**
	 * <获取面单.>
	 * 
	 * @param token
	 * @param customerCode
	 * @param refCode
	 * @return
	 * @author Henry(fba02)
	 * @version [版本号, 2020-12-9]
	 * @see [类、类#方法、类#成员]
	 */
	public String getOrderLabel(String token, String customerCode, RefCode refCode);

	/**
	 * 
	 * <获取产品信息.>
	 * 
	 * @param customerCode
	 * @param token
	 * @return List<ExpressProduct>
	 * @author Henry(fba02)
	 * @version [版本号, 2020-12-9]
	 * @see [类、类#方法、类#成员]
	 */
	public String getProductList(String customerCode, String token);

	/**
	 * 
	 * <获取物流轨迹信息.>
	 * 
	 * @param customerCode
	 * @param token
	 * @param documentCode
	 * @return
	 * @author Henry(fba02)
	 * @version [版本号, 2020-12-9]
	 * @see [类、类#方法、类#成员]
	 */
	public String getLogisticsTrack(String customerCode, String token, String documentCode);
}